#pragma once

#include <my_header.h>

//存储信息
typedef struct {
    char cmd[100];
    char cur_path[1024];
    char token[255];
}cur_info;

// 枚举类型记录各个命令头, 0-6短命令，7-8长命令
typedef enum{
    cd = 1, ls, pwd, mk_dir, rm_dir, undo_rm, upload, download
}COMMAND;

void login(int socket_fd);

int send_bigfile(int socketfd, char *name);

int recv_bigfile(int socketfd, char *name);

int getparameter(char *key, char *value);

// 注册
int enroll(int socket_fd);

// 命令处理 -> 判断长短命令
int cmd_process(char *cmd_head, char *cmd_body, COMMAND *command);

// 子线程处理逻辑
void *file_transfer(void *arg);

// 短命令处理逻辑
int short_cmd(int socket_fd, char *cmd_head, char *cmd_body, char *cmd_backup, char *cur_path);

// 长命令处理逻辑
int long_cmd(int socket_fd, char *cmd_head, char *cmd_body, char *cmd_backup);

// 子线程登陆（测试用）
int pthread_login(int socket_fd);
